/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Copyright 2015-2024 Andres Almiray
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.kordamp.ikonli.openiconic;

import org.kordamp.ikonli.Ikon;

/**
 * @author Andres Almiray
 */
public enum Openiconic implements Ikon {
    // latest is e0de
    ACCOUNT_LOGIN("oi-account-login", '\ue000'),
    ACCOUNT_LOGOUT("oi-account-logout", '\ue001'),
    ACTION_REDO("oi-action-redo", '\ue002'),
    ACTION_UNDO("oi-action-undo", '\ue003'),
    ALIGN_CENTER("oi-align-center", '\ue004'),
    ALIGN_LEFT("oi-align-left", '\ue005'),
    ALIGN_RIGHT("oi-align-right", '\ue006'),
    APERTURE("oi-aperture", '\ue007'),
    ARROW_BOTTOM("oi-arrow-bottom", '\ue008'),
    ARROW_CIRCLE_BOTTOM("oi-arrow-circle-bottom", '\ue009'),
    ARROW_CIRCLE_LEFT("oi-arrow-circle-left", '\ue00a'),
    ARROW_CIRCLE_RIGHT("oi-arrow-circle-right", '\ue00b'),
    ARROW_CIRCLE_TOP("oi-arrow-circle-top", '\ue00c'),
    ARROW_LEFT("oi-arrow-left", '\ue00d'),
    ARROW_RIGHT("oi-arrow-right", '\ue00e'),
    ARROW_THICK_BOTTOM("oi-arrow-thick-bottom", '\ue00f'),
    ARROW_THICK_LEFT("oi-arrow-thick-left", '\ue010'),
    ARROW_THICK_RIGHT("oi-arrow-thick-right", '\ue011'),
    ARROW_THICK_TOP("oi-arrow-thick-top", '\ue012'),
    ARROW_TOP("oi-arrow-top", '\ue013'),
    AUDIO("oi-audio", '\ue015'),
    AUDIO_SPECTRUM("oi-audio-spectrum", '\ue014'),
    BADGE("oi-badge", '\ue016'),
    BAN("oi-ban", '\ue017'),
    BAR_CHART("oi-bar-chart", '\ue018'),
    BASKET("oi-basket", '\ue019'),
    BATTERY_EMPTY("oi-battery-empty", '\ue01a'),
    BATTERY_FULL("oi-battery-full", '\ue01b'),
    BEAKER("oi-beaker", '\ue01c'),
    BELL("oi-bell", '\ue01d'),
    BLUETOOTH("oi-bluetooth", '\ue01e'),
    BOLD("oi-bold", '\ue01f'),
    BOLT("oi-bolt", '\ue020'),
    BOOK("oi-book", '\ue021'),
    BOOKMARK("oi-bookmark", '\ue022'),
    BOX("oi-box", '\ue023'),
    BRIEFCASE("oi-briefcase", '\ue024'),
    BRITISH_POUND("oi-british-pound", '\ue025'),
    BROWSER("oi-browser", '\ue026'),
    BRUSH("oi-brush", '\ue027'),
    BUG("oi-bug", '\ue028'),
    BULLHORN("oi-bullhorn", '\ue029'),
    CALCULATOR("oi-calculator", '\ue02a'),
    CALENDAR("oi-calendar", '\ue02b'),
    CAMERA_SLR("oi-camera-slr", '\ue02c'),
    CARET_BOTTOM("oi-caret-bottom", '\ue02d'),
    CARET_LEFT("oi-caret-left", '\ue02e'),
    CARET_RIGHT("oi-caret-right", '\ue02f'),
    CARET_TOP("oi-caret-top", '\ue030'),
    CART("oi-cart", '\ue031'),
    CHAT("oi-chat", '\ue032'),
    CHECK("oi-check", '\ue033'),
    CHEVRON_BOTTOM("oi-chevron-bottom", '\ue034'),
    CHEVRON_LEFT("oi-chevron-left", '\ue035'),
    CHEVRON_RIGHT("oi-chevron-right", '\ue036'),
    CHEVRON_TOP("oi-chevron-top", '\ue037'),
    CIRCLE_CHECK("oi-circle-check", '\ue038'),
    CIRCLE_X("oi-circle-x", '\ue039'),
    CLIPBOARD("oi-clipboard", '\ue03a'),
    CLOCK("oi-clock", '\ue03b'),
    CLOUD("oi-cloud", '\ue03e'),
    CLOUDY("oi-cloudy", '\ue03f'),
    CLOUD_DOWNLOAD("oi-cloud-download", '\ue03c'),
    CLOUD_UPLOAD("oi-cloud-upload", '\ue03d'),
    CODE("oi-code", '\ue040'),
    COG("oi-cog", '\ue041'),
    COLLAPSE_DOWN("oi-collapse-down", '\ue042'),
    COLLAPSE_LEFT("oi-collapse-left", '\ue043'),
    COLLAPSE_RIGHT("oi-collapse-right", '\ue044'),
    COLLAPSE_UP("oi-collapse-up", '\ue045'),
    COMMAND("oi-command", '\ue046'),
    COMMENT_SQUARE("oi-comment-square", '\ue047'),
    COMPASS("oi-compass", '\ue048'),
    CONTRAST("oi-contrast", '\ue049'),
    COPYWRITING("oi-copywriting", '\ue04a'),
    CREDIT_CARD("oi-credit-card", '\ue04b'),
    CROP("oi-crop", '\ue04c'),
    DASHBOARD("oi-dashboard", '\ue04d'),
    DATA_TRANSFER_DOWNLOAD("oi-data-transfer-download", '\ue04e'),
    DATA_TRANSFER_UPLOAD("oi-data-transfer-upload", '\ue04f'),
    DELETE("oi-delete", '\ue050'),
    DIAL("oi-dial", '\ue051'),
    DOCUMENT("oi-document", '\ue052'),
    DOLLAR("oi-dollar", '\ue053'),
    DOUBLE_QUOTE_SANS_LEFT("oi-double-quote-sans-left", '\ue054'),
    DOUBLE_QUOTE_SANS_RIGHT("oi-double-quote-sans-right", '\ue055'),
    DOUBLE_QUOTE_SERIF_LEFT("oi-double-quote-serif-left", '\ue056'),
    DOUBLE_QUOTE_SERIF_RIGHT("oi-double-quote-serif-right", '\ue057'),
    DROPLET("oi-droplet", '\ue058'),
    EJECT("oi-eject", '\ue059'),
    ELEVATOR("oi-elevator", '\ue05a'),
    ELLIPSES("oi-ellipses", '\ue05b'),
    ENVELOPE_CLOSED("oi-envelope-closed", '\ue05c'),
    ENVELOPE_OPEN("oi-envelope-open", '\ue05d'),
    EURO("oi-euro", '\ue05e'),
    EXCERPT("oi-excerpt", '\ue05f'),
    EXPAND_DOWN("oi-expand-down", '\ue060'),
    EXPAND_LEFT("oi-expand-left", '\ue061'),
    EXPAND_RIGHT("oi-expand-right", '\ue062'),
    EXPAND_UP("oi-expand-up", '\ue063'),
    EXTERNAL_LINK("oi-external-link", '\ue064'),
    EYE("oi-eye", '\ue065'),
    EYEDROPPER("oi-eyedropper", '\ue066'),
    FILE("oi-file", '\ue067'),
    FIRE("oi-fire", '\ue068'),
    FLAG("oi-flag", '\ue069'),
    FLASH("oi-flash", '\ue06a'),
    FOLDER("oi-folder", '\ue06b'),
    FORK("oi-fork", '\ue06c'),
    FULLSCREEN_ENTER("oi-fullscreen-enter", '\ue06d'),
    FULLSCREEN_EXIT("oi-fullscreen-exit", '\ue06e'),
    GLOBE("oi-globe", '\ue06f'),
    GRAPH("oi-graph", '\ue070'),
    GRID_FOUR_UP("oi-grid-four-up", '\ue071'),
    GRID_THREE_UP("oi-grid-three-up", '\ue072'),
    GRID_TWO_UP("oi-grid-two-up", '\ue073'),
    HARD_DRIVE("oi-hard-drive", '\ue074'),
    HEADER("oi-header", '\ue075'),
    HEADPHONES("oi-headphones", '\ue076'),
    HEART("oi-heart", '\ue077'),
    HOME("oi-home", '\ue078'),
    IMAGE("oi-image", '\ue079'),
    INBOX("oi-inbox", '\ue07a'),
    INFINITY("oi-infinity", '\ue07b'),
    INFO("oi-info", '\ue07c'),
    ITALIC("oi-italic", '\ue07d'),
    JUSTIFY_CENTER("oi-justify-center", '\ue07e'),
    JUSTIFY_LEFT("oi-justify-left", '\ue07f'),
    JUSTIFY_RIGHT("oi-justify-right", '\ue080'),
    KEY("oi-key", '\ue081'),
    LAPTOP("oi-laptop", '\ue082'),
    LAYERS("oi-layers", '\ue083'),
    LIGHTBULB("oi-lightbulb", '\ue084'),
    LINK_BROKEN("oi-link-broken", '\ue085'),
    LINK_INTACT("oi-link-intact", '\ue086'),
    LIST("oi-list", '\ue088'),
    LIST_RICH("oi-list-rich", '\ue087'),
    LOCATION("oi-location", '\ue089'),
    LOCK_LOCKED("oi-lock-locked", '\ue08a'),
    LOCK_UNLOCKED("oi-lock-unlocked", '\ue08b'),
    LOOP("oi-loop", '\ue08e'),
    LOOP_CIRCULAR("oi-loop-circular", '\ue08c'),
    LOOP_SQUARE("oi-loop-square", '\ue08d'),
    MAGNIFYING_GLASS("oi-magnifying-glass", '\ue08f'),
    MAP("oi-map", '\ue091'),
    MAP_MARKER("oi-map-marker", '\ue090'),
    MEDIA_PAUSE("oi-media-pause", '\ue092'),
    MEDIA_PLAY("oi-media-play", '\ue093'),
    MEDIA_RECORD("oi-media-record", '\ue094'),
    MEDIA_SKIP_BACKWARD("oi-media-skip-backward", '\ue095'),
    MEDIA_SKIP_FORWARD("oi-media-skip-forward", '\ue096'),
    MEDIA_STEP_BACKWARD("oi-media-step-backward", '\ue097'),
    MEDIA_STEP_FORWARD("oi-media-step-forward", '\ue098'),
    MEDIA_STOP("oi-media-stop", '\ue099'),
    MEDICAL_CROSS("oi-medical-cross", '\ue09a'),
    MENU("oi-menu", '\ue09b'),
    MICROPHONE("oi-microphone", '\ue09c'),
    MINUS("oi-minus", '\ue09d'),
    MONITOR("oi-monitor", '\ue09e'),
    MOON("oi-moon", '\ue09f'),
    MOVE("oi-move", '\ue0a0'),
    MUSICAL_NOTE("oi-musical-note", '\ue0a1'),
    PAPERCLIP("oi-paperclip", '\ue0a2'),
    PENCIL("oi-pencil", '\ue0a3'),
    PEOPLE("oi-people", '\ue0a4'),
    PERSON("oi-person", '\ue0a5'),
    PHONE("oi-phone", '\ue0a6'),
    PIE_CHART("oi-pie-chart", '\ue0a7'),
    PIN("oi-pin", '\ue0a8'),
    PLAY_CIRCLE("oi-play-circle", '\ue0a9'),
    PLUS("oi-plus", '\ue0aa'),
    POWER_STANDBY("oi-power-standby", '\ue0ab'),
    PRINT("oi-print", '\ue0ac'),
    PROJECT("oi-project", '\ue0ad'),
    PULSE("oi-pulse", '\ue0ae'),
    PUZZLE_PIECE("oi-puzzle-piece", '\ue0af'),
    QUESTION_MARK("oi-question-mark", '\ue0b0'),
    RAIN("oi-rain", '\ue0b1'),
    RANDOM("oi-random", '\ue0b2'),
    RELOAD("oi-reload", '\ue0b3'),
    RESIZE_BOTH("oi-resize-both", '\ue0b4'),
    RESIZE_HEIGHT("oi-resize-height", '\ue0b5'),
    RESIZE_WIDTH("oi-resize-width", '\ue0b6'),
    RSS("oi-rss", '\ue0b8'),
    RSS_ALT("oi-rss-alt", '\ue0b7'),
    SCRIPT("oi-script", '\ue0b9'),
    SHARE("oi-share", '\ue0bb'),
    SHARE_BOXED("oi-share-boxed", '\ue0ba'),
    SHIELD("oi-shield", '\ue0bc'),
    SIGNAL("oi-signal", '\ue0bd'),
    SIGNPOST("oi-signpost", '\ue0be'),
    SORT_ASCENDING("oi-sort-ascending", '\ue0bf'),
    SORT_DESCENDING("oi-sort-descending", '\ue0c0'),
    SPREADSHEET("oi-spreadsheet", '\ue0c1'),
    STAR("oi-star", '\ue0c2'),
    SUN("oi-sun", '\ue0c3'),
    TABLET("oi-tablet", '\ue0c4'),
    TAG("oi-tag", '\ue0c5'),
    TAGS("oi-tags", '\ue0c6'),
    TARGET("oi-target", '\ue0c7'),
    TASK("oi-task", '\ue0c8'),
    TERMINAL("oi-terminal", '\ue0c9'),
    TEXT("oi-text", '\ue0ca'),
    THUMB_DOWN("oi-thumb-down", '\ue0cb'),
    THUMB_UP("oi-thumb-up", '\ue0cc'),
    TIMER("oi-timer", '\ue0cd'),
    TRANSFER("oi-transfer", '\ue0ce'),
    TRASH("oi-trash", '\ue0cf'),
    UNDERLINE("oi-underline", '\ue0d0'),
    VERTICAL_ALIGN_BOTTOM("oi-vertical-align-bottom", '\ue0d1'),
    VERTICAL_ALIGN_CENTER("oi-vertical-align-center", '\ue0d2'),
    VERTICAL_ALIGN_TOP("oi-vertical-align-top", '\ue0d3'),
    VIDEO("oi-video", '\ue0d4'),
    VOLUME_HIGH("oi-volume-high", '\ue0d5'),
    VOLUME_LOW("oi-volume-low", '\ue0d6'),
    VOLUME_OFF("oi-volume-off", '\ue0d7'),
    WARNING("oi-warning", '\ue0d8'),
    WIFI("oi-wifi", '\ue0d9'),
    WRENCH("oi-wrench", '\ue0da'),
    X("oi-x", '\ue0db'),
    YEN("oi-yen", '\ue0dc'),
    ZOOM_IN("oi-zoom-in", '\ue0dd'),
    ZOOM_OUT("oi-zoom-out", '\ue0de'),;

    public static Openiconic findByDescription(String description) {
        for (Openiconic font : values()) {
            if (font.getDescription().equals(description)) {
                return font;
            }
        }
        throw new IllegalArgumentException("Icon description '" + description + "' is invalid!");
    }

    private String description;
    private int code;

    Openiconic(String description, int code) {
        this.description = description;
        this.code = code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    @Override
    public int getCode() {
        return code;
    }
}